Los gráficos son usados, fundamentalmente, para mostrar resultados derivados de los conjuntos de datos de forma ordenada y estructurada, para así hacerlos más interpretables y convincentes. Edward Tufe menciona seis principios en su libro del 2006: Beautiful Evidence.
Veamos un ejemplo:
En R, hay una gran variedad de tipos de medios gráficos, cada uno con sus características particulares. Algunos ejemplos son PDF, PNG, JPEG, SVG y TIFF.
baselatticeggplot2baseContiene funciones para gráficos elementales.
boxplot(cars, main = "Título", xlab = "X", ylab = "Y")basenames(par())## [1] "xlog" "ylog" "adj" "ann" "ask"
## [6] "bg" "bty" "cex" "cex.axis" "cex.lab"
## [11] "cex.main" "cex.sub" "cin" "col" "col.axis"
## [16] "col.lab" "col.main" "col.sub" "cra" "crt"
## [21] "csi" "cxy" "din" "err" "family"
## [26] "fg" "fig" "fin" "font" "font.axis"
## [31] "font.lab" "font.main" "font.sub" "lab" "las"
## [36] "lend" "lheight" "ljoin" "lmitre" "lty"
## [41] "lwd" "mai" "mar" "mex" "mfcol"
## [46] "mfg" "mfrow" "mgp" "mkh" "new"
## [51] "oma" "omd" "omi" "page" "pch"
## [56] "pin" "plt" "ps" "pty" "smo"
## [61] "srt" "tck" "tcl" "usr" "xaxp"
## [66] "xaxs" "xaxt" "xpd" "yaxp" "yaxs"
## [71] "yaxt" "ylbias"
basepar("fg") # Da el color del primer plano## [1] "black"
par('pch') # Da el tipo de línea y el ancho## [1] 1
par("lty") # Puede ser dashed, dotted, etc.## [1] "solid"
latticey ~ xlatticelibrary(lattice)
xyplot(Sepal.Length ~ Sepal.Width | Species, data = iris)ggplot2qplot() (quick plot o gráfico rápido), la cual funciona más o menos como plot en el sistema base.ggplot(), que es más flexible y se puede personalizar para hacer las cosas que qplot() no puede.ggplot2library(ggplot2)
qplot(displ, hwy, data = mpg, geom = c("point", "smooth"), facets = . ~ drv)ggplot2g <- ggplot(mpg, aes(displ, hwy))
g + geom_point() +
geom_smooth(method = "lm") + # Para agregar una línea
facet_grid(. ~ drv) + # Se divide en columnas
ggtitle("Título")leafletLa función leaflet() crea un mapa que se almacena en una variable, por lo que, posteriormente, puede ser modificada. La función addTiles() agrega datos de los mapas del sitio Open Street Map.
leaftletlibrary(leaflet)
mi_mapa <- leaflet() %>%
addTiles()
mi_mapaleaftletEs posible añadir marcadores al mapa utilizando la función addMarkers() especificando la latitud y la longitud. Además, es posible agregar etiquetas a estos mismos marcadores.
leaftletmi_mapa <- mi_mapa %>%
addMarkers(lat = 9.937059, lng = -84.051896,
popup = "Usted está aquí")
mi_mapaleafletPor lo general, no es eficiente añadir un marcador a la vez al mapa. Por lo tanto, si se desea agergar varios marcadores a la vez, se puede hacer usando un data.frame cuyas columnas sean lat y lng (latitud y longitud, respectivamente). De esta forma, se pueden agregar todos los marcadores de una sola vez.
leafletset.seed(2017-02-02)
df <- data.frame(lat = runif(20, min = 9.93, max = 9.95),
lng = runif(20, min = -84.03, max = -84.01))
df %>% leaflet() %>%
addTiles() %>%
addMarkers()leafletTambién es posible modificar el tipo de marcador:
icono<- makeIcon(
iconUrl = "https://fotos.subefotos.com/5142ea1e0297bbec97530d6989e0700bo.jpg",
iconWidth = 31 * 215 / 230, iconHeight = 31,
iconAnchorX = 31 * 215 / 230 / 2, iconAnchorY = 16
)
df %>%
leaflet() %>%
addTiles() %>%
addMarkers(lat = 9.937059, lng = -84.051869,
popup = "Que chiva...", icon = icono)leafletAlgunas veces es necesario marcar varios puntos en el mapa, pero no tiene sentido usar todos los marcadores al mismo tiempo, sino usar algún tipo de agrupamiento.
leafletdf<-data.frame(lat = runif(20, min = 9.93, max = 9.95),
lng = runif(20, min = -84.03, max = -84.01))
df %>%
leaflet() %>%
addTiles() %>%
addMarkers(clusterOptions = markerClusterOptions())leafletAparte de añadir marcadores simples o agrupados, también se puede añadir, de forma sencilla, marcadores circulaes mediante la función addCircleMarkers().
leaftletdf<-data.frame(lat = runif(20, min = 9.93, max = 9.95),
lng = runif(20, min = -84.03, max = -84.01))
df %>%
leaflet() %>%
addTiles() %>%
addCircleMarkers()leaftletPueden dibujarse formas arbitrarias en los mapas creados, incluyendo círuclos y cuadrados. El código de la siguiente diapositiva dibuja un mapa donde el círculo en cada ciudad es proporcional a la población de la misma.
leafletciudades<-data.frame(name = c("Baltimore", "Frederick", "Rockville", "Gaithersburg",
"Bowie", "Hagerstown", "Annapolis", "College Park", "Salisbury", "Laurel"),
pob = c(619493, 66169, 62334, 61045, 55232,
39890, 38880, 30587, 30484, 25346),
lat = c(39.2920592, 39.4143921, 39.0840, 39.1434, 39.0068, 39.6418, 38.9784, 38.9897, 38.3607, 39.0993),
lng = c(-76.6077852, -77.4204875, -77.1528, -77.2014, -76.7791, -77.7200, -76.4922, -76.9378, -75.5994, -76.8483))
ciudades %>%
leaflet() %>%
addTiles() %>%
addCircles(weight = 1, radius = sqrt(ciudades$pob) * 30)leaftletLos rectángulos también aparecen en los mapas de leaftlet
leaflet() %>%
addTiles() %>%
addRectangles(lat1 = 37.3858, lng1 = -122.0595,
lat2 = 37.3890, lng2 = -122.0625) leaftletdf<- data.frame(lat = runif(20, min = 39.25, max = 39.35),
lng = runif(20, min = -76.65, max = -76.55),
col = sample(c("red", "blue", "green"), 20, replace = TRUE),
stringsAsFactors = FALSE)
df %>%
leaflet() %>%
addTiles() %>%
addCircleMarkers(color = df$col) %>%
addLegend(labels = LETTERS[1:3], colors = c("blue", "red", "green"))highcharterEl paquete highcharter, basada en un paquete de JavaScript del mismo nombre, es bastante reciente en R y permite hacer gráficos interactivos de muchas formas. La página oficial y la documentación del paquete están en el sitio http://jkunst.com/highcharter/hchart.html. Veamos un ejemplo del mapa de desempleo de EEUU, tomado directamente del sitio oficial.
highcharterlibrary(dplyr)
library(highcharter)
hcmap("countries/us/us-all-all", data = unemployment,
name = "Unemployment", value = "value", joinBy = c("hc-key", "code"),
borderColor = "transparent") %>%
hc_colorAxis(dataClasses = color_classes(c(seq(0, 10, by = 2), 50))) %>%
hc_legend(layout = "vertical", align = "right",
floating = TRUE, valueDecimals = 0, valueSuffix = "%")